﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.OleDb;
using System.Data.Common;
using ExcelReportDll;
using FPTToolWeb.Control.DataGrids;
using FPTToolWeb.Data;
using System.Text;
 
/// <summary>
/// Summary description for Export 
/// </summary>
public class Export
{
    public Export()
    {
    }
    #region CSV
    public static void ExportDataTableToCSV(DataTable dt, string filename, string header)
    {

        StringBuilder sb = new StringBuilder();
        //Write Header
        //foreach (DataColumn column in dt.Columns)
        //{
        //    sb.Append(column.ColumnName + "\t");

        //}
        sb.Append(header);
        sb.Append(Environment.NewLine);

        //Write Row
        foreach (DataRow row in dt.Rows)
        {
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                sb.Append(row[i].ToString() + "\t");
            }
            sb.Append(Environment.NewLine);
        }
        HttpResponse resp = HttpContext.Current.Response;
        HttpContext context = HttpContext.Current;
        context.Response.Clear();
        context.Response.AddHeader("Content-Disposition", "attachment; filename=" + filename + ".csv"); ;
        context.Response.ContentType = "text/csv";

        using (StreamWriter writer = new StreamWriter(context.Response.OutputStream, Encoding.UTF32))
        {
            writer.Write(sb.ToString());
        }
        context.Response.End();
    }
    #endregion
    public static void ExportExcelTotal(System.Web.UI.Page pPage, string procName, string TemplateName, string[] strHeaderParams, string[] strHeaderValues, string strFooterParams, string strFooterValues, bool IsGroupLv1, bool IsGroupLv2, bool IsSum, bool IsSum1, bool IsSum2)
    {
        ReportExcel bc = new ReportExcel();
        DatabaseHelper DB = new DatabaseHelper();
        DataTable dt = DB.ExecuteDataTable(procName);

        #region Config System
        /*
				 * itempheadlv1: id cho Header Group 1
				 * itempheadlv2: id cho Header Group 2
				 * itempsumlv1: id sum cap 1
				 * itempsumlv2: id sum cap 2MO
				 * itempsumtotal: id sum tong cong tat ca
				 * */
        #endregion
        #region Config Basic
        /*
        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II
        bc.IsSum = false; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = "@"+TemplateName;
        string strHeaderParams = "";
        string strHeaderValues = "";
        string strFooterParams = "";
        string strFooterValues = "";
         */

        bc.IsGroupLv1 = IsGroupLv1; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I,Chỉ định column muốn group ở vị trí đầu tiên trong câu SELECT
        bc.IsGroupLv2 = IsGroupLv2; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II,Chỉ định column muốn group ở vị trí thứ 2 trong câu SELECT
        bc.IsSum = IsSum; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = IsSum1; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = IsSum2; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = TemplateName;

        bc.sHeaderParams1 = strHeaderParams[0];
        bc.sHeaderValues1 = strHeaderValues[0];
        bc.sHeaderParams2 = strHeaderParams[1];
        bc.sHeaderValues2 = strHeaderValues[1];
        bc.sHeaderParams3 = strHeaderParams[2];
        bc.sHeaderValues3 = strHeaderValues[2];
        bc.sHeaderParams4 = strHeaderParams[3];
        bc.sHeaderValues4 = strHeaderValues[3];
        bc.sHeaderParams5 = strHeaderParams[4];
        bc.sHeaderValues5 = strHeaderValues[4];
        bc.sHeaderParams6 = strHeaderParams[5];
        bc.sHeaderValues6 = strHeaderValues[5];
        bc.sHeaderParams7 = strHeaderParams[6];
        bc.sHeaderValues7 = strHeaderValues[6];
        bc.sHeaderParams8 = strHeaderParams[7];
        bc.sHeaderValues8 = strHeaderValues[7];
        bc.sHeaderParams9 = strHeaderParams[8];
        bc.sHeaderValues9 = strHeaderValues[8];
        bc.sHeaderParams10 = strHeaderParams[9];
        bc.sHeaderValues10 = strHeaderValues[9];

        bc.sFooterParams = strFooterParams;
        bc.sFooterValues = strFooterValues;
        string strReports = bc.strReportBasic(dt);
        #endregion
        //End

        ExcelExporter myExcelXport = new ExcelExporter(pPage);
        myExcelXport.ExportHTMLToExcel(strReports, "Excel");
        myExcelXport = null;

        //Export  Export.ExportExcel(this.Page, "Recuitment..GetTest @ItemCode=''", @"Vattu.htm", "", "", "", "", false, 1, false, 2, false, false, false);
    }
    #region ExportExcel
    public static void ExportExcel(System.Web.UI.Page pPage, string procName, string TemplateName, string strHeaderParams, string strHeaderValues, string strFooterParams, string strFooterValues, bool IsGroupLv1, bool IsGroupLv2, bool IsSum, bool IsSum1, bool IsSum2)
    {
        ReportExcel bc = new ReportExcel();
        DatabaseHelper DB = new DatabaseHelper();
        DataTable dt = DB.ExecuteDataTable(procName);

        #region Config System
        /*
				 * itempheadlv1: id cho Header Group 1
				 * itempheadlv2: id cho Header Group 2
				 * itempsumlv1: id sum cap 1
				 * itempsumlv2: id sum cap 2MO
				 * itempsumtotal: id sum tong cong tat ca
				 * */
        #endregion
        #region Config Basic
        /*
        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II
        bc.IsSum = false; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = "@"+TemplateName;
        string strHeaderParams = "";
        string strHeaderValues = "";
        string strFooterParams = "";
        string strFooterValues = "";
         */

        bc.IsGroupLv1 = IsGroupLv1; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I,Chỉ định column muốn group ở vị trí đầu tiên trong câu SELECT
        bc.IsGroupLv2 = IsGroupLv2; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II,Chỉ định column muốn group ở vị trí thứ 2 trong câu SELECT
        bc.IsSum = IsSum; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = IsSum1; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = IsSum2; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = TemplateName;

        bc.sHeaderParams = strHeaderParams;
        bc.sHeaderValues = strHeaderValues;
        bc.sFooterParams = strFooterParams;
        bc.sFooterValues = strFooterValues;
        string strReports = bc.strReportBasic(dt);
        #endregion
        //End

        ExcelExporter myExcelXport = new ExcelExporter(pPage);
        myExcelXport.ExportHTMLToExcel(strReports, "Excel");
        myExcelXport = null;
        //Export  Export.ExportExcel(this.Page, "Recuitment..GetTest @ItemCode=''", @"Vattu.htm", "", "", "", "", false, 1, false, 2, false, false, false);
    }
    public static void ExportExcel(System.Web.UI.Page pPage, DataTable datatable, string TemplateName, string strHeaderParams, string strHeaderValues, string strFooterParams, string strFooterValues, bool IsGroupLv1, bool IsGroupLv2, bool IsSum, bool IsSum1, bool IsSum2)
    {
        ReportExcel bc = new ReportExcel();
        DatabaseHelper DB = new DatabaseHelper();
        DataTable dt = datatable;

        #region Config System
        /*
				 * itempheadlv1: id cho Header Group 1
				 * itempheadlv2: id cho Header Group 2
				 * itempsumlv1: id sum cap 1
				 * itempsumlv2: id sum cap 2MO
				 * itempsumtotal: id sum tong cong tat ca
				 * */
        #endregion
        #region Config Basic
        /*
        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II
        bc.IsSum = false; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = "@"+TemplateName;
        string strHeaderParams = "";
        string strHeaderValues = "";
        string strFooterParams = "";
        string strFooterValues = "";
         */

        bc.IsGroupLv1 = IsGroupLv1; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I,Chỉ định column muốn group ở vị trí đầu tiên trong câu SELECT
        bc.IsGroupLv2 = IsGroupLv2; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II,Chỉ định column muốn group ở vị trí thứ 2 trong câu SELECT
        bc.IsSum = IsSum; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = IsSum1; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = IsSum2; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = TemplateName;

        bc.sHeaderParams = strHeaderParams;
        bc.sHeaderValues = strHeaderValues;
        bc.sFooterParams = strFooterParams;
        bc.sFooterValues = strFooterValues;
        string strReports = bc.strReportBasic(dt);
        #endregion
        //End

        ExcelExporter myExcelXport = new ExcelExporter(pPage);
        myExcelXport.ExportHTMLToExcel(strReports, "Excel");
        myExcelXport = null;

        //Export  Export.ExportExcel(this.Page, "Recuitment..GetTest @ItemCode=''", @"Vattu.htm", "", "", "", "", false, 1, false, 2, false, false, false);
    }
    public static void ExportExcelToDataTable(System.Web.UI.Page pPage, DataTable dt, string TemplateName, string strHeaderParams, string strHeaderValues, string strFooterParams, string strFooterValues, bool IsGroupLv1, bool IsGroupLv2, bool IsSum, bool IsSum1, bool IsSum2)
    {
        ReportExcel bc = new ReportExcel();
        //DatabaseHelper DB = new DatabaseHelper();
        //DataTable dt = DB.ExecuteDataTable(procName);
         
        #region Config System
        /*
				 * itempheadlv1: id cho Header Group 1
				 * itempheadlv2: id cho Header Group 2
				 * itempsumlv1: id sum cap 1
				 * itempsumlv2: id sum cap 2MO
				 * itempsumtotal: id sum tong cong tat ca
				 * */
        #endregion
        #region Config Basic
        /*
        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II
        bc.IsSum = false; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = "@"+TemplateName;
        string strHeaderParams = "";
        string strHeaderValues = "";
        string strFooterParams = "";
        string strFooterValues = "";
         */

        bc.IsGroupLv1 = IsGroupLv1; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I,Chỉ định column muốn group ở vị trí đầu tiên trong câu SELECT
        bc.IsGroupLv2 = IsGroupLv2; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II,Chỉ định column muốn group ở vị trí thứ 2 trong câu SELECT
        bc.IsSum = IsSum; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = IsSum1; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = IsSum2; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = TemplateName;

        bc.sHeaderParams = strHeaderParams;
        bc.sHeaderValues = strHeaderValues;
        bc.sFooterParams = strFooterParams;
        bc.sFooterValues = strFooterValues;
        string strReports = bc.strReportBasic(dt);
        
        #endregion
        //End

        ExcelExporter myExcelXport = new ExcelExporter(pPage);        
        //myExcelXport.ExportGroupLevelNoHeader(dt,"Bao cao de thi","",0,1,"Excel");
        myExcelXport.ExportHTMLToExcel(strReports, "Excel");

        myExcelXport = null;
         
        //Export  Export.ExportExcel(this.Page, "Recuitment..GetTest @ItemCode=''", @"Vattu.htm", "", "", "", "", false, 1, false, 2, false, false, false);
    }
    public static void ExportExcel(System.Web.UI.Page pPage, string procName, string TemplateName)
    {
        ReportExcel bc = new ReportExcel();
        DatabaseHelper DB = new DatabaseHelper();
        DataTable dt = DB.ExecuteDataTable(procName);

        #region Config System
        /*
				 * itempheadlv1: id cho Header Group 1
				 * itempheadlv2: id cho Header Group 2
				 * itempsumlv1: id sum cap 1
				 * itempsumlv2: id sum cap 2
				 * itempsumtotal: id sum tong cong tat ca
				 * */
        #endregion
        #region Config Basic
        /*
        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II
        bc.IsSum = false; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = "@"+TemplateName;
        string strHeaderParams = "";
        string strHeaderValues = "";
        string strFooterParams = "";
        string strFooterValues = "";
         */

        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I,Chỉ định column muốn group ở vị trí đầu tiên trong câu SELECT
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II,Chỉ định column muốn group ở vị trí thứ 2 trong câu SELECT
        bc.IsSum = false; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = TemplateName;

        bc.sHeaderParams = "";
        bc.sHeaderValues = "";
        bc.sFooterParams = "";
        bc.sFooterValues = "";
        string strReports = bc.strReportBasic(dt);
        #endregion
        //End

        ExcelExporter myExcelXport = new ExcelExporter(pPage);
        myExcelXport.ExportHTMLToExcel(strReports, "Excel");
        myExcelXport = null;
        //Export.ExportExcel(this.Page, "ShiftData_List @FromDate='" + dtpFromDate.SelectedDate + "',@ToDate='" + dtpToDate.SelectedDate + "',@WarehouseName='" + cboRefWarehouseCode.Text + "',@JobTitle='" + cboTitle.SelectedValue + "'", "Baocaodethi.htm");
        //Export.ExportExcel(this.Page, "Recuitment..GetTest @ItemCode=''", @"Vattu.htm", "", "", "", "", false, 1, false, 2, false, false, false);
    }

    public static void ExportExcel(System.Web.UI.Page pPage, string procName, string TemplateName, bool IsSum)
    {
        ReportExcel bc = new ReportExcel();
        DatabaseHelper DB = new DatabaseHelper();
        DataTable dt = DB.ExecuteDataTable(procName);

        #region Config System
        /*
				 * itempheadlv1: id cho Header Group 1
				 * itempheadlv2: id cho Header Group 2
				 * itempsumlv1: id sum cap 1
				 * itempsumlv2: id sum cap 2
				 * itempsumtotal: id sum tong cong tat ca
				 * */
        #endregion
        #region Config Basic
        /*
        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II
        bc.IsSum = false; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = "@"+TemplateName;
        string strHeaderParams = "";
        string strHeaderValues = "";
        string strFooterParams = "";
        string strFooterValues = "";
         */

        bc.IsGroupLv1 = false; //Co Group 1 khong?
        bc.GroupLv1 = 1; //Chỉ định Group level 1 ở cột thứ I,Chỉ định column muốn group ở vị trí đầu tiên trong câu SELECT
        bc.IsGroupLv2 = false; //Co Group 2 khong?
        bc.GroupLv2 = 2; //Chỉ định Group level 2 ở cột thứ II,Chỉ định column muốn group ở vị trí thứ 2 trong câu SELECT
        bc.IsSum = IsSum; //Có Sum tong hay không? Nếu có thì phải có id template (itempsumtotal) đi kèm
        bc.IsSum1 = false; //Có Sum cap 1 hay không? Nếu có thì phải có id template (itempsumlv1) đi kèm
        bc.IsSum2 = false; //Có Sum cap 2 hay không? Nếu có thì phải có id template (itempsumlv2) đi kèm
        bc.sfileTemplate = TemplateName;

        bc.sHeaderParams = "";
        bc.sHeaderValues = "";
        bc.sFooterParams = "";
        bc.sFooterValues = "";
        string strReports = bc.strReportBasic(dt);
        #endregion
        //End

        ExcelExporter myExcelXport = new ExcelExporter(pPage);
        myExcelXport.ExportHTMLToExcel(strReports, "Excel");
        myExcelXport = null;

        //Export  Export.ExportExcel(this.Page, "Recuitment..GetTest @ItemCode=''", @"Vattu.htm", "", "", "", "", false, 1, false, 2, false, false, false);
    }
    #endregion

    #region Import du lieu to Datagird

    public static string ImportExcelTo_DataGrid(DataGrid dtgGrid, string pstrFilename)
    {

        string mstr_FileName = pstrFilename;

        if (!File.Exists(pstrFilename))
        {
            return "File not found, Please check path of the filename again!";
        }
        string mstr_PathFileName = mstr_FileName;
        //------------------

        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mstr_PathFileName + ";Extended Properties=Excel 8.0;";
        OleDbConnection Connection = new OleDbConnection(strConn);
        Connection.Open();
        DataTable dt = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        Connection.Close();
        string strName = "";

        if (dt.Rows.Count > 0)
        {
            strName = dt.Rows[0]["TABLE_NAME"].ToString().Trim();
        }

        OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [" + strName + "]", strConn);
        DataSet myDataSet = new DataSet();
        myCommand.Fill(myDataSet, "ExcelData");

        dt = new DataTable();
        DataRow dr;

        int iCom = myDataSet.Tables["ExcelData"].Columns.Count;

        try
        {
            for (int j = 0; j < iCom; j++)
            {
                string strDataColumn = myDataSet.Tables["ExcelData"].Rows[0][j].ToString().Trim();
                dt.Columns.Add(new DataColumn(strDataColumn, typeof(string)));
            }
            for (int i = 1; i < myDataSet.Tables["ExcelData"].Rows.Count; i++)
            {
                dr = dt.NewRow();
                for (int j = 0; j < iCom; j++)
                {
                    string strValue = myDataSet.Tables["ExcelData"].Rows[i][j].ToString().Trim();

                    dr[j] = strValue;
                }
                dt.Rows.Add(dr);
            }
            DataView dv = new DataView(dt);
            dtgGrid.DataSource = dv;
            dtgGrid.DataBind();
            dtgGrid.Columns[1].Visible = false;

            myDataSet.Dispose();
            return "Successful!";
        }
        catch (Exception exp)
        {
            myDataSet.Dispose();
            return exp.Message;
        }
    }
    #endregion

    #region Insert du lieu tu file import

    /// <summary>
    /// Import Excel To DB:
    /// </summary>
    /// <param name="pstrFilename"></param>
    /// <param name="strProcedureName"></param>
    /// <param name="strTableName"></param>
    /// <returns></returns>
    public static string ImpactDB_ImportExcel(string pstrFilename, string strProcedureName, string strTableName)
    {
        string mstr_FileName = pstrFilename;

        if (!File.Exists(pstrFilename))
        {
            return "File not found, Please check path of the filename again!";
        }
        string mstr_PathFileName = mstr_FileName;
        //------------------

        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mstr_PathFileName + ";Extended Properties=Excel 8.0;";
        OleDbConnection Connection = new OleDbConnection(strConn);
        Connection.Open();
        DataTable dt = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        Connection.Close();
        /*
        string strName = "";

        if (dt.Rows.Count > 0)
        {
            strName = dt.Rows[0]["TABLE_NAME"].ToString().Trim();
        }

        OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM " + strName, strConn);
        */
        OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
        DataSet myDataSet = new DataSet();
        myCommand.Fill(myDataSet, "ExcelData");
        int iCom = myDataSet.Tables["ExcelData"].Columns.Count;

        DatabaseHelper DB = new DatabaseHelper();
        DataTable dtObj = DB.GetColumnsToDataTable(strTableName);
        DB.BeginTransaction();
        try
        {
            for (int i = 0; i < myDataSet.Tables["ExcelData"].Rows.Count; i++)
            {
                DB.ClearParameter();
                for (int j = 0; j < iCom; j++)// Bo qua column Id
                {
                    DbParameter param = DB.Parameter;
                    param.ParameterName = dtObj.Rows[j + 1]["COLUMN_NAME"].ToString();
                    param.DbType = DB.ConvertDataType(dtObj.Rows[j + 1]["DATA_TYPE"].ToString());
                    param.Size = Utils.SafeDataInteger(dtObj.Rows[j + 1]["CHARACTER_MAXIMUM_LENGTH"]);
                    string strValue = myDataSet.Tables["ExcelData"].Rows[i][j].ToString().Trim();

                    if (strValue.Replace("&nbsp;", "").Trim() == "")
                        param.Value = DBNull.Value;
                    else
                    {
                        if (param.DbType == DbType.Boolean)
                            param.Value = (strValue == "True" || strValue == "1") ? 1 : 0;
                        else if (param.DbType == DbType.Int32)
                            param.Value = strValue.Replace(",", "");
                        else
                            param.Value = strValue;
                    }
                    DB.AddParameter(param);
                }
                DB.ExecuteNonQuery(strProcedureName, CommandType.StoredProcedure,ConnectionState.KeepOpen);
            }
        }
        catch (Exception exp)
        {
            exp.ToString();
            DB.RollbackTransaction();
            return "Failed!";

        }
        DB.CommitTransaction();
        return "Successful!";

        //Ex: Export.ImpactDB_ImportExcel(Server.MapPath("Upload/vattu.xls"), "InsertTest", "ItemTest"); 
    }
    #endregion
}

